A content delivery network or content distribution network (CDN) is a large distributed system of servers deployed in multiple datacenters across the Internet and the globe. CDNs are used to deliver content, including web objects (texts, graphics and scripts), downloadable objects (media files, software, software upgrades, documents, etc.), applications (e-commerce, portals, etc.), live streaming media, on-demand videos, web accelerations, and social networks, for example. The delivery of content to end-users should be done with high availability and high performance.
Content providers (CPs), such as media companies and e-commerce vendors, pay CDN operators to deliver their content to end-users. In turn, an operator of a CDN pays Internet Service Providers (ISPs), carriers, network operators and cloud owners, for hosting its servers in their datacenters.
For example, FIG. 1 shows a conventional communication system 10 including a CDN 12. The CDN 12 includes a request router (RR) 14, a CDN monitoring node 15, a log collector (LC) 16, and a plurality of delivery nodes 18. Of course, a person skilled in the art will appreciate that a CDN may comprise other elements, such as databases, for performing their standard procedures and functions. The plurality of delivery nodes 18 are usually deployed at both the edge and core networks to deliver contents to end-users.
The CDN 12 typically has an agreement with or is owned by a content provider (CP) 20, for delivering content to end-users. The CP 20 has a content portal, from which an end-user device 22 can browse and request contents or services, for example. Once the end-user selects a specific content or service, a request for the service is sent to the RR 14. The RR 14 selects one or more delivery nodes 18 that are best suitable for serving the end-user. For example, the RR 14 can dynamically redirect service requests to a delivery node 18 located closer to an end-user issuing the requests. The redirection or selection of a delivery node is done based on a list of available delivery nodes, which are given by the CDN monitoring node 15. More specifically, the CDN monitoring node 15, which can be connected to the RR 14 or be co-located with the RR 14, dynamically calculates which available delivery node from the list 18 is located closest to the requesting end-user and transmits the list of delivery nodes to the RR 14. The calculations help to reduce the distance that contents have to travel, and the number of hops that data packets need to make. As a result, packet loss, jitter and latency are reduced, while user experience is improved.
The delivery nodes 18 have cache servers, in which copies of different contents and services are stored. Furthermore, each delivery node 18 produces log files or access log files. Every time that a service request is received, the delivery node 18 accesses the log file to record the service request. The log file can be used for analytics, billing and data mining, etc. More specifically, the LC 16 collects the log files from each delivery node 18 and reformats them for analytics and audit purposes.
Typically, there are two kinds of logs, one is an access log, and the other one is a session log. Each log might have different formats that can be standard (e.g. icecast, apache) or customized.
For an access log, it logs the incoming Uniform Resource Locator (URL) when the service request accesses the delivery node. The delivery node produces one or few large access log files. For a session log, it logs all the incoming URLs within the same session into a single file. Normally the delivery node produces many small session log files.
In order to efficiently utilize the delivery nodes, the RR 14 needs to have accurate information and knowledge about the availability of the delivery nodes. However, due to the structure of the CDN and the dynamic nature of the services, it is not easy to have an accurate picture of the availability of the delivery nodes. For example, current systems pre-assign bandwidth to services from different content providers. Since services can be added or removed dynamically, some services can be blocked even if some delivery nodes still have bandwidth or some delivery nodes could be blacklisted even though they were assigned to a particular service.
Therefore, it would be desirable to provide a system and a method that obviate or mitigate the above described problems.